package com.lifang.imsoa.util;

import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;

public class ValidateUtil {
	/**
	 * 功能描述:校验身份证是否合法,18位与15位均可校验
	 * 18位初步校验生日是否合法，15位只要求全为数字
	 * <pre>
	 * Modify Reason:(修改原因,不需覆盖，直接追加.)
	 *     bianjie:   2015年4月27日      新建
	 * </pre>
	 *
	 * @param code
	 * @return 验证通过返回true，不通过返回false
	 */
	public static boolean checkIdentityCode(String code){
		if(StringUtils.isNotBlank(code)){
			String codeReg = "^(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)$";
			return Pattern.matches(codeReg, code);
		}
		return false;
	}
	
	/**
	 * 功能描述:根据身份证号返回性别
	 *
	 * <pre>
	 * Modify Reason:(修改原因,不需覆盖，直接追加.)
	 *     bianjie:   2015年5月12日      新建
	 * </pre>
	 *
	 * @param code
	 * @return 0-保密 1-男 2-女
	 */
	public static int getGenderByCardId(String code){
		if(isCodeValid(code)){
			int i = Integer.parseInt(code.substring(16,17))%2;
			if(i==0){
				return 2;//女
			}else if(i==1){
				return 1;//男
			}
		}
		return 0;
	}
	
	/**
	 * 功能描述:根据身份证号返回格式化生日
	 * <pre>
	 * Modify Reason:(修改原因,不需覆盖，直接追加.)
	 *     bianjie:   2015年6月8日      新建
	 * </pre>
	 *
	 * @param code
	 * @return e.g. 12月05日
	 */
	public static String getBirth(String code){
		if(isCodeValid(code)){
			return code.substring(10,12)+"月"+code.substring(12, 14)+"日";
		}
		return "";
	}

	private static boolean isCodeValid(String code){
		return (code!=null && code.length()==18);
	}
	
	/**
	 * 校验手机号码
	 */
	public static boolean checkMobile(String code){
		if(StringUtils.isNotBlank(code)){
			String codeReg = "^1[3|4|5|7|8|9]\\d{9}$";
			return Pattern.matches(codeReg, code);
		}
		return false;
	} 
	
	/**
	 * 校验环信用户名
	 */
	public static boolean checkUsername(String code){
		if(StringUtils.isNotBlank(code)){
			String codeReg = "[a-zA-Z0-9_\\-.]*";
			return Pattern.matches(codeReg, code);
		}
		return false;
	}
	
	public static void main(String[] args) {
		System.out.println(checkUsername("132132"));
	}
}
